﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using MedicalAssistant.core.dao;

namespace MedicalAssistant.core.dao.xml
{
    class XMLPacienteDAO: XMLGenericDAO<Paciente, uint>, PacienteDAO
    {
        private static XMLPacienteDAO dao = null;
        private const string xmlFile = "paciente.xml";

        private XMLPacienteDAO()
        {
            FileInfo file = new FileInfo(GetXmlPath());
            if(!file.Exists)
            {

                List<Paciente> list = new List<Paciente>();
                MakePersistent(list);
            }
        }

        public static XMLPacienteDAO GetInstance()
        {
            if(dao == null)
            {
                dao = new XMLPacienteDAO();
            }
            return dao;
        }

        public override Paciente FindById(uint id)
        {
            List<Paciente> all = GetAll();
            foreach (Paciente paciente in all)
            {
                if (paciente.Prontuario.Equals(id))
                {
                    return paciente;
                }
            }
            return null;
        }

        public override Paciente Save(Paciente entity)
        {
            List<Paciente> all = GetAll();
            all.Add(entity);
            MakePersistent(all);
            return entity;
            
        }

        
        public override void Delete(Paciente entity)
        {
            
            List<Paciente> all = GetAll();
            foreach(Paciente paciente in all)
            {
                if(paciente.Prontuario.Equals(entity.Prontuario))
                {
                    all.Remove(paciente);
                    return;
                }
            }
            MakePersistent(all);
        }


        protected override string GetXmlPath()
        {
            return xmlFile;
        }
    }
}